Skip to content

Add proactive desync detection for wrapped names#1107

Open
storywithoutend wants to merge 3 commits intomainfrom
feature/fet-2894-fix-desyncing-message-for-names-that-are-not-expired
Open

Add proactive desync detection for wrapped names#1107
storywithoutend wants to merge 3 commits intomainfrom
feature/fet-2894-fix-desyncing-message-for-names-that-are-not-expired

Conversation

@storywithoutend
Copy link
Copy Markdown
Contributor

@storywithoutend storywithoutend commented Feb 4, 2026

Detect out-of-sync wrapped names by comparing expiry timestamps before the NameWrapper internally expires. Previously, desynced names were only detected after the wrapper expiry passed (when owner shows as 0x0).

Now checks: wrapperExpiry !== registrarExpiry + gracePeriod

This allows users to see the "Name misconfigured" warning and repair their names before encountering failed contract calls.

on sepolia, a test name desynced-active-name.eth was created to simulate this situation.

Detect out-of-sync wrapped names by comparing expiry timestamps before
the NameWrapper internally expires. Previously, desynced names were only
detected after the wrapper expiry passed (when owner shows as 0x0).

Now checks: wrapperExpiry !== registrarExpiry + gracePeriod

This allows users to see the "Name misconfigured" warning and repair
their names before encountering failed contract calls.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Feb 4, 2026

Deploying ens-app-v3 with  Cloudflare Pages  Cloudflare Pages

Latest commit: 85fd96f
Status: ✅  Deploy successful!
Preview URL: https://29bd6649.ens-app-v3.pages.dev
Branch Preview URL: https://feature-fet-2894-fix-desynci.ens-app-v3.pages.dev

View logs

The wrapper data mock was using GRACE_PERIOD (milliseconds) while the
expiry mock uses gracePeriod in seconds, causing unit mismatch in the
isWrappedNameDesynced check. This made all wrapped name tests fail with
unexpected 'desynced' status.

- Replace GRACE_PERIOD constant with 7776000 (seconds) in wrapper mock
- Add grace-period variants for emancipated and locked wrapper data types
- Update test configs to use correct grace-period wrapper types
- Fix typo: "licked" -> "locked" in test name

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@storywithoutend storywithoutend changed the base branch from main to feature/fet-2911-update-ensjs-version-in-manager-v3 February 6, 2026 09:56
@storywithoutend storywithoutend changed the base branch from feature/fet-2911-update-ensjs-version-in-manager-v3 to main February 6, 2026 10:08
…imestamp rounding

The strict equality checks for expiry timestamps after name extension
failed because the blockchain contract doesn't always produce an exact
365-day extension. Aligned all assertions with the tolerance pattern
already used elsewhere in the same test file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Feb 6, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant